嗨,大家好,今天是視窗程式設計第九天的教學影片,在之前的影片已經成功讓車子做移動,同時也讓青蛙透過按鍵的觸發做出移動,而今天要來處理當青蛙碰到車子時,產生碰撞時的處理。
判斷兩張圖片是否產生碰撞,其實就是判斷兩張圖片的邊界是否有碰到,在此程式撰寫的語法為:
if( 圖片一名稱.Bounds.IntersectsWith( 圖片二名稱.Bounds) )
{
// 撞到後執行的程式碼
}
也就是當兩張圖片的邊界有交集到時,就執行 if 內的程式碼,而在這次遊戲中,我們希望讓兩張圖片不再移動,並且顯示遊戲結束的字句,讓使用者知道已經撞到了。遊戲結束的字句採用 label 控制項,並且將 Visible 屬性設為 false,也就是在遊戲一開始時是不會看到它的存在。
同時新增一個 bool 型別的變數,來判斷是否產生過碰撞,若沒有(值為false),則在按鍵按下時可經由 KeyPress function 來做對應處理,若產生碰撞,則將該變數設為 true,使 KeyPress function 無法再處理鍵盤按鍵的輸入,並將 timer 做停止,使青蛙和汽車的圖片呈現靜止,最後將 label 的 Visible 屬性設為 true,就可以達成遊戲結束的效果。
關於碰撞條件內的程式如下:
if( pictureBox_frog.Bounds.IntersectsWith(pictureBox_car.Bounds) )
{
game_state = true; // 表示碰撞
label_game_state.Visible = true; // 顯示遊戲結束的 label
timer1.Stop(); // 車子不再做移動
}
以上是今天的教學。